/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cube.estructura.per;

import cube.estructura.obj.Reserva;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Leonardo
 */
public class ReservaPer
{  
   public static Reserva obtenerReserva(Connection con, long xIdClubDeportivo, long xIdCancha, long xDia, String xHora, long xIdUsuario) throws Exception
   {
        Reserva objReserva = new Reserva();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                       "from RESERVA "+
                                                         "where ID_CLUB_DEPORTIVO=? and "+
                                                         " ID_CANCHA=? and "+
                                                         " DIA=? and "+
                                                         " HORA=? and "+
                                                         "ID_USUARIO=? ");
            st.setLong(1, xIdClubDeportivo);
            st.setLong(2, xIdCancha);
            st.setLong(3, xDia);
            st.setString(4, xHora);
            st.setLong(5, xIdUsuario);

            ResultSet resultado = st.executeQuery();

            if(resultado.next())
            {
                objReserva.setIdClubDeportivo(resultado.getLong("ID_CLUB_DEPORTIVO"));
                objReserva.setIdCancha(resultado.getLong("ID_CANCHA"));
                objReserva.setDia(resultado.getLong("DIA"));
                objReserva.setHora(resultado.getString("HORA"));
                objReserva.setIdUsuario(resultado.getLong("ID_USUARIO"));
                objReserva.setPrecio(resultado.getDouble("PRECIO"));
                objReserva.setFechaIngreso(resultado.getString("FECHA_INGRESO"));
                objReserva.setHoraIngreso(resultado.getString("HORA_INGRESO"));
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return objReserva;
   }

   public static boolean existeReserva(Connection con, long xIdClubDeportivo, long xIdCancha, long xDia, String xHora, long xIdUsuario) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select count(*) as EXISTE " +
                                                      "from RESERVA " +
                                                         "where ID_CLUB_DEPORTIVO=? and "+
                                                         " ID_CANCHA=? and "+
                                                         " DIA=? and "+
                                                         " HORA=? and "+
                                                         "ID_USUARIO=? ");

            st.setLong(1, xIdClubDeportivo);
            st.setLong(2, xIdCancha);
            st.setLong(3, xDia);
            st.setString(4, xHora);
            st.setLong(5, xIdUsuario);

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }

   public static ArrayList<Reserva> obtenerColeccionReserva(Connection con) throws Exception
   {
        ArrayList colReserva = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from RESERVA");

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Reserva objReserva = new Reserva();

                objReserva.setIdClubDeportivo(resultado.getLong("ID_CLUB_DEPORTIVO"));
                objReserva.setIdCancha(resultado.getLong("ID_CANCHA"));
                objReserva.setDia(resultado.getLong("DIA"));
                objReserva.setHora(resultado.getString("HORA"));
                objReserva.setIdUsuario(resultado.getLong("ID_USUARIO"));
                objReserva.setPrecio(resultado.getDouble("PRECIO"));
                objReserva.setFechaIngreso(resultado.getString("FECHA_INGRESO"));
                objReserva.setHoraIngreso(resultado.getString("HORA_INGRESO"));

                colReserva.add(objReserva);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colReserva;
    }

    public static void altaReserva(Connection con, Reserva xObjReserva) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("insert into RESERVA " +
                                                      "values (?,?,?,?,?,?,?,?)");

            st.setLong(1, xObjReserva.getIdClubDeportivo());
            st.setLong(2, xObjReserva.getIdCancha());
            st.setLong(3, xObjReserva.getDia());
            st.setString(4, xObjReserva.getHora());
            st.setLong(5, xObjReserva.getIdUsuario());
            st.setDouble(6, xObjReserva.getPrecio());
            st.setString(7, xObjReserva.getFechaIngreso());
            st.setString(8, xObjReserva.getHoraIngreso());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void bajaReserva(Connection con, Reserva xObjReserva) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("delete from RESERVA " +
                                                         "where ID_CLUB_DEPORTIVO=? and "+
                                                         " ID_CANCHA=? and "+
                                                         " DIA=? and "+
                                                         " HORA=? and "+
                                                         "ID_USUARIO=? ");

            st.setLong(1, xObjReserva.getIdClubDeportivo());
            st.setLong(2, xObjReserva.getIdCancha());
            st.setLong(3, xObjReserva.getDia());
            st.setString(4, xObjReserva.getHora());
            st.setLong(5, xObjReserva.getIdUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void modificaReserva(Connection con, Reserva xObjReserva) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("update RESERVA " +
                                                      "set PRECIO=?, "+
                                                      "FECHA_INGRESO=?, "+
                                                      "HORA_INGRESO=? "+
                                                         "where ID_CLUB_DEPORTIVO=? and "+
                                                         " ID_CANCHA=? and "+
                                                         " DIA=? and "+
                                                         " HORA=? and "+
                                                         "ID_USUARIO=? ");

            st.setDouble(1, xObjReserva.getPrecio());
            st.setString(2, xObjReserva.getFechaIngreso());
            st.setString(3, xObjReserva.getHoraIngreso());
            st.setLong(4, xObjReserva.getIdClubDeportivo());
            st.setLong(5, xObjReserva.getIdCancha());
            st.setLong(6, xObjReserva.getDia());
            st.setString(7, xObjReserva.getHora());
            st.setLong(8, xObjReserva.getIdUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }
}
